home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993…stman Always Clicks Twice / ADC Developer CD (1993-01) (''The Postman Always Clicks Twice'')_iso / Dev.CD 199301.iso / Development Platforms / CSMP Digests / csmp-v1-047.txt < prev    next >
Encoding:
Text File  |  1992-11-18  |  43.6 KB  |  1,126 lines  |  [TEXT/MPS ]

  1. C.S.M.P. Digest             Fri, 10 Apr 92       Volume 1 : Issue 47
  2.  
  3. Today's Topics:
  4.  
  5.     680x0 Caches
  6.     sprintf weirdness
  7.     Questions on THINK C Objects and Interrupts
  8.     code overflow in Think C
  9.     "Procedural" (was Re: Suggestion to the Developers of Think C)
  10.     Opening documents while the creator prog is running?
  11.     Help! Declaring big array
  12.     Looking for B-Tree/Data base source
  13.     Letting Sleeping Powerbooks Lie
  14.     MPW C++ & Zortech C++ Info Wanted
  15.     CTB/System 7 popup menu bug
  16.  
  17.  
  18. The Comp.Sys.Mac.Programmer Digest is moderated by Michael A. Kelly.
  19.  
  20. These digests are available (by using FTP, account anonymous, your email
  21. address as password) in the pub/mac/csmp-digest directory on ftp.cs.uoregon.
  22. edu.  This is also the home of the comp.sys.mac.programmer Frequently Asked
  23. Questions list.
  24.  
  25. These digests are also available via email.  Just send a note saying that you
  26. want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will
  27. automatically receive each new digest as it is created.
  28.  
  29. The articles in these digests are taken directly from comp.sys.mac.programmer.
  30. They are not edited; all articles included in this digest are in their original
  31. posted form.  The only articles that are -not- included in these digests are
  32. those which didn't receive any replies (except those that give information
  33. rather than ask a question).  All replies to each article are concatenated
  34. onto the original article in the order in which they were received.  Article
  35. threads are not added to the digests until the last article added to the
  36. thread is at least one month old (this is to ensure that the thread is dead
  37. before adding it to the digests).
  38.  
  39. Send administrative mail to mkelly@cs.uoregon.edu.
  40.  
  41. -------------------------------------------------------
  42.  
  43. From: warren@laplace.biology.yale.edu (Warren DeLano)
  44. Subject: 680x0 Caches
  45. Date: 8 Mar 92 04:55:25 GMT
  46. Organization: Yale University
  47.  
  48. This may now be a FAQ, but what is the most fool-proof way to
  49. flush the caches on a 680x0 machine?
  50.  
  51. Warren
  52. warren@laplace.biology.yale.edu
  53.  
  54. +++++++++++++++++++++++++++
  55.  
  56. From: glenn@gla-aux.uucp (Glenn Austin)
  57. Date: Mon, 9 Mar 92 09:47:23 PST
  58. Organization: The Pit Lane
  59.  
  60.  
  61. In article <1992Mar8.045525.15919@news.yale.edu> (comp.sys.mac.programmer), warren@laplace.biology.yale.edu (Warren DeLano) writes:
  62. > This may now be a FAQ, but what is the most fool-proof way to
  63. > flush the caches on a 680x0 machine?
  64.  
  65. The BEST, most 100% foolproof way to flush the caches on the Mac (in asm
  66. of course!):
  67.  
  68.     _FlushDataCache
  69.     _FlushInstructionCache
  70.  
  71. ===============================================================================
  72. | Glenn L. Austin                | "Turn too soon, run out of room.           |
  73. | Macintosh Wizard and           |    Turn too late, much better fate."       |
  74. | Auto Racing Driver             |   -- Jim Russell Racing School Instructors |
  75. | Usenet:  glenn@gla-aux.uucp or glenn%gla-aux.uucp@skinner.cs.uoregon.edu    |
  76. ===============================================================================
  77.  
  78. ---------------------------
  79.  
  80. From: topix@gpu.utcs.utoronto.ca (R. Munroe)
  81. Subject: sprintf weirdness
  82. Date: 8 Mar 92 05:32:12 GMT
  83. Organization: UTCS Public Access
  84.  
  85.  
  86. Just a little sprintf() strangeness:
  87.  
  88. Assume you have a pointer to a number of floats (actually any data type
  89. will probably do) i.e. values[0] = 0.0 values[1] = 1.0 values[2] = 2.0.
  90.  
  91. Under THINK C 4, the following worked OK
  92.  
  93. char buffer[30];
  94.  
  95. sprintf (buffer, "%f %f %f", *values++, *values++, *values++);
  96.  
  97. Under THINK C 5, the values get reversed in the char buffer:
  98.  
  99. Should be:  0.0 1.0 2.0
  100. But are: 2.0 1.0 0.0
  101.  
  102. >From what I understand, multiple incremention on the same line is
  103. undefined by ANSI - so I guess it can't be called a bug.
  104.  
  105. sprintf (buffer, "%f %f %f", values[0], values[1], values[2]);
  106.  
  107. works just fine (so at least I have a work-around).  
  108.  
  109. Just curious - why did it work OK under 4.0.x but
  110. now doesn't work under 5.0.x?
  111.  
  112.  
  113.  
  114. - -- 
  115. Bob Munroe                                : Internet:   topix@utcs.utoronto.ca
  116. Technical Director                        : CompuServe: 71160,3455
  117. TOPIX Computer Graphics + Animation, Inc. : AppleLink:  CDA0695
  118.  
  119. +++++++++++++++++++++++++++
  120.  
  121. From: neeri@iis.ethz.ch (Matthias Ulrich Neeracher)
  122. Organization: Integrated Systems Laboratory, ETH, Zurich
  123. Date: Mon, 9 Mar 1992 09:28:28 GMT
  124.  
  125. In article <1992Mar8.053212.29624@gpu.utcs.utoronto.ca> topix@gpu.utcs.utoronto.ca (R. Munroe) writes:
  126. >Just a little sprintf() strangeness:
  127. >
  128. >Assume you have a pointer to a number of floats (actually any data type
  129. >will probably do) i.e. values[0] = 0.0 values[1] = 1.0 values[2] = 2.0.
  130. >
  131. >Under THINK C 4, the following worked OK
  132. >char buffer[30];
  133. >sprintf (buffer, "%f %f %f", *values++, *values++, *values++);
  134.  
  135. This depends on what you define as "OK" - 90% of the world's C programmers
  136. would probably be very surprised with the result of this program.
  137.  
  138. >Under THINK C 5, the values get reversed in the char buffer:
  139. >
  140. >Should be:  0.0 1.0 2.0
  141. >But are: 2.0 1.0 0.0
  142. >
  143. >From what I understand, multiple incremention on the same line is
  144. >undefined by ANSI - so I guess it can't be called a bug.
  145.  
  146. Correct.
  147.  
  148. >sprintf (buffer, "%f %f %f", values[0], values[1], values[2]);
  149. >
  150. >works just fine (so at least I have a work-around).  
  151.  
  152. NOt, you don't have a *workaround*, you have a *correct solution*.
  153.  
  154. >Just curious - why did it work OK under 4.0.x but
  155. >now doesn't work under 5.0.x?
  156.  
  157. Easy, once you see it. 4.0.x evaluated arguments to sprintf() left-to-right,
  158. like a Pascal compiler (I have this suspiction that TC 4.0.x was actually
  159. Pascal in C clothing :-), while 5.0.x evaluates arguments right-to-left, like
  160. most other C compilers. Why right-to-left ? Since for procedures with a
  161. variable number of arguments to work, arguments *have* to be pushed on the
  162. stack in right-to-left order, so that the called procedure always knows at what
  163. stack offset to find the format string.
  164.  
  165. Hope this helped
  166.  
  167. Matthias
  168.  
  169. - -----
  170. Matthias Neeracher                                   neeri@iis.ethz.ch
  171.  "You must have picked up that copy of Scarlett instead of Inside Mac
  172.   when you tried to find the right call..." -- Keith Rollin
  173.  
  174. ---------------------------
  175.  
  176. From: gregor@oit.itd.umich.edu (Gregor Purdy)
  177. Subject: Questions on THINK C Objects and Interrupts
  178. Date: 8 Mar 92 15:08:11 GMT
  179. Organization: University of Michigan EECS Dept., Ann Arbor, MI
  180.  
  181. Friends--
  182.  
  183. Does somebody out there know if it is OK for a THINK C virtual method to be  
  184. called at interrupt time? I've got a function that has a chance of being called  
  185. at interrupt time, and I want it to call a THINK C virtual method.
  186.  
  187. If not, can I use the Event Manager (or some pre-7.0 event stuff) to send my
  188. self an event from that function (with a pointer to some data), which I'll
  189. later get in my event loop, and then call my virtual method?
  190.  
  191. Thanks!
  192.  
  193. - --Gregor
  194.  
  195. - ------------------------------------------------------------------------------
  196. Gregor N. Purdy                                               gregor@umich.edu
  197.  
  198. greetings! I am a m@tating s_gnatu~e vrrus. Y*u can't resst hel#ing me +pread!
  199. - ------------------------------------------------------------------------------
  200.  
  201. +++++++++++++++++++++++++++
  202.  
  203. From: phils@chaos.cs.brandeis.edu (Phil Shapiro)
  204. Date: 9 Mar 92 15:09:37 GMT
  205. Organization: Symantec Corp.
  206.  
  207. In article <1992Mar8.150811.10317@zip.eecs.umich.edu> gregor@oit.itd.umich.edu (Gregor Purdy) writes:
  208.  
  209.    Does somebody out there know if it is OK for a THINK C virtual
  210.    method to be called at interrupt time? I've got a function that has
  211.    a chance of being called at interrupt time, and I want it to call a
  212.    THINK C virtual method.
  213.  
  214. There shouldn't be any problem with this, provided that the virtual
  215. method that you're calling is in a loaded segment, and that your
  216. global data pointer (A5 or A4) is correct. The actual method dispatch
  217. code is in the source file msg.c, if you want to check this out
  218. yourself.
  219.  
  220.    If not, can I use the Event Manager (or some pre-7.0 event stuff)
  221.    to send my self an event from that function (with a pointer to some
  222.    data), which I'll later get in my event loop, and then call my
  223.    virtual method?
  224.  
  225. According to IM, PostEvent is safe at interrupt time, but it's not a
  226. good idea, since you can't tell which application you'll be posting
  227. events to. If you're running under System 7 or MultiFinder, you could
  228. post the event to another application's layer.
  229.  
  230. If the object dispatch doesn't work for you, you may want to just set
  231. a global flag which your app's main loop can poll.
  232.  
  233.     -phil
  234. - --
  235.    Phil Shapiro                                   Software Engineer
  236.    Language Products Group                     Symantec Corporation
  237.            Internet: phils@cs.brandeis.edu
  238.  
  239. ---------------------------
  240.  
  241. From: peterc@moebius.cubetech.com (Peter Creath)
  242. Subject: code overflow in Think C
  243. Date: 8 Mar 92 06:31:40 GMT
  244. Organization: Cube Technologies
  245.  
  246. Well, after being bitched at to read the manual, I felt it necessary
  247. to track down the offending line and show you that I CAN'T break the
  248. source file into smaller segments (yes, it's only one line that's
  249. causing the problem):
  250.  
  251. unsigned long enc[4][4096], permenc[4][4096];
  252.  
  253. So I'm allocating 128k non-relocatable.  Bad programming practice,
  254. sure, but how can I get around this error and still retain the array
  255. use of these variables?  Can I just do this:
  256.  
  257. unsigned long enc[][], permenc[][];
  258. &enc = NewPtr(65536L);
  259. &permenc = NewPtr(65536L);
  260.  
  261. - ----------------------------------------------------------------------------
  262. Peter Creath                 "When I was a boy I was told that anybody could
  263. peterc@moebius.cubetech.com   become president; I'm beginning to believe it."
  264.                                                            -- Clarence Darrow
  265.  
  266. +++++++++++++++++++++++++++
  267.  
  268. From: neeri@iis.ethz.ch (Matthias Ulrich Neeracher)
  269. Date: 9 Mar 92 09:35:43 GMT
  270. Organization: Integrated Systems Laboratory, ETH, Zurich
  271.  
  272. In article <dx3uv972.tu47b5@moebius.cubetech.com> peterc@moebius.cubetech.com (Peter Creath) writes:
  273. >Well, after being bitched at to read the manual, I felt it necessary
  274. >to track down the offending line and show you that I CAN'T break the
  275. >source file into smaller segments (yes, it's only one line that's
  276. >causing the problem):
  277. >
  278. >unsigned long enc[4][4096], permenc[4][4096];
  279. >
  280. >So I'm allocating 128k non-relocatable.  Bad programming practice,
  281. >sure, but how can I get around this error and still retain the array
  282. >use of these variables?  Can I just do this:
  283. >
  284. >unsigned long enc[][], permenc[][];
  285. >&enc = NewPtr(65536L);
  286. >&permenc = NewPtr(65536L);
  287.  
  288. No. The C compiler would have a hard time guessing the dimensions and the &enc
  289. = ... is too avantgardist even for Algol. With the risk of forever destroying
  290. my already dubious reputation on this esteemed forum, here is my untested,
  291. uncompiled solution:
  292.  
  293. typedef unsigned long enctable[4][4096];
  294.  
  295. enctable * encp, * permencp;
  296.  
  297. encp      = (enctable *) NewPtr(sizeof(enctable));
  298. permencp  = (enctable *) NewPtr(sizeof(enctable));
  299.  
  300. #define enc     (*encp)
  301. #define permenc (*permencp)
  302.  
  303. Matthias
  304.  
  305. - -----
  306. Matthias Neeracher                                   neeri@iis.ethz.ch
  307.    "One fine day in my odd past..." -- Pixies, _Planet of Sound_
  308.  
  309. ---------------------------
  310.  
  311. From: ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University)
  312. Subject: "Procedural" (was Re: Suggestion to the Developers of Think C)
  313. Date: 9 Mar 92 10:55:25 +1300
  314. Organization: University of Waikato, Hamilton, New Zealand
  315.  
  316. In article <699636657.F00003@blkcat.UUCP>, Pete.Gontier@p811.f70.n109.z1.fidonet.org (Pete Gontier) writes:
  317. > Well, that's not really much of an excuse, as long as the objects are
  318. > a bag on the side of a procedural language, like C++.
  319.  
  320. Just a note on terminology here: object-oriented languages *are* a category of
  321. procedural languages.
  322.  
  323. "Procedural" describes a language which lets you write "procedures", which
  324. are rules for performing sequences of "actions", where an "action" is
  325. something that causes a change in the machine state. Object "methods" are
  326. just another kind of procedure.
  327.  
  328. The other kind of language is "functional", which only lets you write rules
  329. for computing values from other values--there is no concept of change of
  330. state.
  331.  
  332. Lawrence D'Oliveiro                       fone: +64-7-856-2889
  333. Computer Services Dept                     fax: +64-7-838-4066
  334. University of Waikato            electric mail: ldo@waikato.ac.nz
  335. Hamilton, New Zealand    37^ 47' 26" S, 175^ 19' 7" E, GMT+13:00
  336.  
  337. +++++++++++++++++++++++++++
  338.  
  339. From: mnykanen@cs.Helsinki.FI (Matti Nykanen)
  340. Date: 9 Mar 92 11:26:13 GMT
  341.  
  342. In <1992Mar9.105525.6828@waikato.ac.nz> ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University) writes:
  343.  
  344.     :
  345. >Just a note on terminology here: object-oriented languages *are* a category of
  346. >procedural languages.
  347.     :
  348. >The other kind of language is "functional", which only lets you write rules
  349. >for computing values from other values--there is no concept of change of
  350. >state.
  351.  
  352. Don't forget the THIRD kind: Logic programming languages! :-)
  353. Internet: Matti.Nykanen@Helsinki.FI  Department of Computer Science
  354. Voice:    +358-0-708 4207            University of Helsinki,Finland
  355.  
  356. ---------------------------
  357.  
  358. From: a-giles@uchicago.edu (Aaron Giles)
  359. Subject: Opening documents while the creator prog is running?
  360. Date: 8 Mar 92 20:44:25 GMT
  361. Organization: University of Chicago High Energy Physics
  362.  
  363.  
  364. OK, this should be an easy question.  I've got a program (which needs
  365. to be pre-System 7 compatible, so AppleEvents are out) which needs to
  366. be able to respond when the user double-clicks one of its documents in
  367. the Finder.  This is fairly straightforward when the program needs to
  368. be launched; just use CountAppFiles(), GetAppFiles(), and
  369. ClrAppFiles().  However, if the user tries to open a document while
  370. the program is already running, the Finder does something to trick the
  371. app into thinking the user selected Open (probably a Cmd-O event).
  372. All fine and good, but I don't know how to determine the difference
  373. between this situation and a normal Open operation.  I would assume
  374. that a pointer to an AppFile structure or something similar would be
  375. passed in the message field of the event, but I can't seem to figure
  376. it out.  All I really need to know is how I get the file information,
  377. what sort of structure it is, and how this event is different from the
  378. standard Open event.
  379.  
  380. Thanks in advance,
  381. Aaron
  382. - -----
  383.                      Aaron Giles -- a-giles@uchicago.edu
  384.            "You can't have everything ... where would you put it?"
  385.  
  386. +++++++++++++++++++++++++++
  387.  
  388. From: neeri@iis.ethz.ch (Matthias Ulrich Neeracher)
  389. Date: 9 Mar 92 09:38:45 GMT
  390. Organization: Integrated Systems Laboratory, ETH, Zurich
  391.  
  392. In article <A-GILES.92Mar8144425@ellis.uchicago.edu> a-giles@uchicago.edu (Aaron Giles) writes:
  393. >OK, this should be an easy question.  I've got a program (which needs
  394. >to be pre-System 7 compatible, so AppleEvents are out) which needs to
  395. >be able to respond when the user double-clicks one of its documents in
  396. >the Finder.  This is fairly straightforward when the program needs to
  397. >be launched; just use CountAppFiles(), GetAppFiles(), and
  398. >ClrAppFiles().  However, if the user tries to open a document while
  399. >the program is already running, the Finder does something to trick the
  400. >app into thinking the user selected Open (probably a Cmd-O event).
  401. >All fine and good, but I don't know how to determine the difference
  402. >between this situation and a normal Open operation.
  403.  
  404. You shouldn't see any difference. The Multifinder tries its best to pretend to
  405. your application that a normal open is happening.
  406.  
  407. Matthias
  408.  
  409. - -----
  410. Matthias Neeracher                                   neeri@iis.ethz.ch
  411.    "There once was an Age of Reason, but we've progressed beyond it."
  412.                                    -- Ayn Rand, _Atlas Shrugged_
  413.  
  414. +++++++++++++++++++++++++++
  415.  
  416. From: kresch@vu-vlsi.vill.edu (Ed Kresch)
  417. Date: 9 Mar 92 18:06:42 GMT
  418. Organization: Villanova University
  419.  
  420. In article <A-GILES.92Mar8144425@ellis.uchicago.edu> a-giles@uchicago.edu writes:
  421. >
  422. >OK, this should be an easy question.  I've got a program (which needs
  423. >to be pre-System 7 compatible, so AppleEvents are out) which needs to
  424. >be able to respond when the user double-clicks one of its documents in
  425. >the Finder.  This is fairly straightforward when the program needs to
  426. >be launched; just use CountAppFiles(), GetAppFiles(), and
  427. >ClrAppFiles().  However, if the user tries to open a document while
  428. >the program is already running, the Finder does something to trick the
  429. >app into thinking the user selected Open (probably a Cmd-O event).
  430. >All fine and good, but I don't know how to determine the difference
  431. >between this situation and a normal Open operation.  I would assume
  432. >that a pointer to an AppFile structure or something similar would be
  433. >passed in the message field of the event, but I can't seem to figure
  434. >it out.  All I really need to know is how I get the file information,
  435. >what sort of structure it is, and how this event is different from the
  436. >standard Open event.
  437. >
  438. >Thanks in advance,
  439. >Aaron
  440. >-----
  441. >                     Aaron Giles -- a-giles@uchicago.edu
  442. >           "You can't have everything ... where would you put it?"
  443.  
  444. Aaron,
  445.  
  446. When you double click on a document file while it's owner is running,
  447. multifinder generates a mousedown event in the appropriate menu item.  It also
  448. sets up a patch of some sort so that the next call to SFGetFile does not bring
  449. up the normal dialog, but returns the information from the document file that
  450. got the double click.  The point is that all this is done outside your program,
  451. and there is no provision made by multifinder to allow your program to
  452. distinguish this from a real mousedown event in the menu.  This is true in
  453. system 7 as well as in the older systems when multifinder is used.
  454.  
  455. (For example, open any application that has a separate help file.  Pick one
  456. that you know is well written, such as MacDraw, Word, etc.  Get back to the
  457. finder leaving the application running, and double click on the help file.
  458. The alert you get is a result of the inability of the application to
  459. distinguish between these artificial mousedown events and real ones.  In
  460. particular, upon receiving a command to open a document, the application calls
  461. SFGetFile with a list of file types.  The help file is not included in this
  462. list, since it is not a document that is expected to be opened.  Hence the
  463. error message.)
  464.  
  465. There is a way around it; actually several.  I will give you the easiest one
  466. I have found.  What you have to do is create a dummy menu entry that you never
  467. allow to occur.  Here's what I mean.
  468.  
  469. In your resource file, you will have several menus, one of which is the file
  470. menu.  Let's assume there are 6 items in this menu, the last of which is the
  471. Quit command.  Create a 7th item; call it anything you want, I usually call
  472. it MFGet (for multifinder get).  The end of the menu definition will look
  473. like:
  474.  
  475.         "Quit",                             /*  6 */
  476.             noIcon, "Q",    nomark, plain;
  477.         "MFGet",                            /*  7 */
  478.             noIcon, nokey,  nomark, plain
  479.  
  480. Also, in your resource file, the 'mstr' entries will now look like:
  481.  
  482. resource 'mstr' (100, purgeable)
  483. {
  484.     "File"
  485. };
  486.  
  487. resource 'mstr' (101, purgeable)
  488. {
  489.     "Quit"
  490. };
  491.  
  492. resource 'mstr' (102, purgeable)
  493. {
  494.     "File"
  495. };
  496.  
  497. resource 'mstr' (103, purgeable)
  498. {
  499.     "MFGet"
  500. };
  501.  
  502. In your initialization section of the program, set up the menus like this:
  503.  
  504.     MenuHandle      filemenu;
  505.     char            mfget[12];
  506.     .
  507.     .
  508.     .
  509.     filemenu = GetMenu (fileId);
  510.     GetItem (filemenu, 7, mfget);
  511.     InsertMenu (filemenu, 0);
  512.     .
  513.     .
  514.     .
  515.  
  516. Note that the MFGet entry is active at this time.
  517.  
  518. Then in your event loop, whenever there is a mousedown event in the menu bar,
  519. you do the following:
  520.  
  521.     EventRecord     er;
  522.     unsigned long   what
  523.     .
  524.     .
  525.     .
  526.     case inMenuBar:
  527.         DelMenuItem (filemenu, 7);
  528.         what = MenuSelect (er.where);
  529.         /* Do menu stuff. In particular, if the menu ID is the file menu and
  530.            the item is 7, call a subroutine such as MFGet ().*/
  531.         AppendMenu (filemenu, mfget);
  532.         break;
  533.     .
  534.     .
  535.     .
  536.  
  537. In other words, you delete the MFGet item from the file menu before the menu
  538. is drawn.  Then you add it back in after you are done.  Since the item is
  539. deleted whenever the menu is displayed, it can NEVER be selected using the
  540. mouse.  However, since multifinder generates this event artificially, it will
  541. occur whenever you double click on an item owned by the application.
  542.  
  543. Your MFGet subroutine should only be called when the call is an artificial
  544. one from the multifinder.  You can supply a different type list and avoid the
  545. alert, or do whatever else you want in this subroutine.
  546.  
  547. This works with version <7 and multifinder; I have not had the opportunity to
  548. test it with version 7 of the system.
  549.  
  550. I hope this is of use to you.
  551.  
  552. Ed Kresch
  553.  
  554. PS.  We have been having problems with our newsposter.  Sometimes the items
  555. don't make it out of here.  I am posting this also, because I think others
  556. might be interested.  Please let me know if you get the news item within a few
  557. days so I can tell our system operator if the newsposter is working or not.
  558. Thanks.
  559.  
  560. +++++++++++++++++++++++++++
  561.  
  562. From: k044477@hobbes.kzoo.edu (Jamie R. McCarthy)
  563. Organization: Kalamazoo College
  564. Date: Mon, 9 Mar 1992 19:57:31 GMT
  565.  
  566. kresch@vu-vlsi.vill.edu (Ed Kresch) writes:
  567. >
  568. >(For example, open any application....  Pick one
  569. >that you know is well written, such as ... Word ...
  570.  
  571. That was a joke, right?
  572. - -- 
  573.  Jamie McCarthy     Internet: k044477@kzoo.edu     AppleLink: j.mccarthy
  574.  Kzoo randomly kills all my mail;  if I don't acknowledge, try resending.    
  575.  
  576. ---------------------------
  577.  
  578. From: putzolu@toadflax.cs.ucdavis.edu (David Putzolu)
  579. Subject: Help! Declaring big array
  580. Date: 9 Mar 92 07:01:53 GMT
  581. Organization: Department of Computer Science, University of California, Davis
  582.  
  583. I'm trying to declare a big array in Think Pascal v. 4.0 like this:
  584. bitMap : array[1..800,1..600] of boolean;
  585. Think Pascal keeps telling me "available memory for variables at this
  586. level has been exhausted". I've upped the stack space to 1meg, zone to
  587. two, in vain hope that that would do it, since 800*600*1byte = 480k.
  588. No luck. I've also tried declaring it dynamically (bm: ptr bitMap with
  589. bitMap as a type, but then I can't remember how to access the
  590. individual entries in the array). Has anyone run into a problem with
  591. this before? And how do I solve it! Help!!!
  592.  
  593. | David M. A. Putzolu                  | putzolu@cs.ucdavis.edu                |
  594. | Senior Undergraduate                 | op disclaimer(opinion : ptr mine)     |
  595. | Computer Science and Psychology      |       Aiuto! Sono caduto e            |
  596. | University of California at Davis    |         non posso alzarmi!            |
  597.  
  598. +++++++++++++++++++++++++++
  599.  
  600. From: mhall@occs.cs.oberlin.edu (Matthew Hall)
  601. Date: 9 Mar 92 16:49:08 GMT
  602. Organization: Oberlin College Computer Science
  603.  
  604. Dear david - 
  605.     Due to the limitations of the segment manager, the size of any
  606. segment must be less than 32k.  Global variables are included in the
  607. size of a segment.  Therefore, even if you declared it as a packed
  608. array   (in Think Pascal, this would be 1 bit per element instead of 8, 
  609. and if you are making a bitmap to copy to screen, you had better 
  610. use a packed array or your final image will be fairly strange looking),
  611. you'd still have a 60k variable.  (Note - Think allows 64k segments in
  612. it's environment, but when you build an app, you MUST have only
  613. 32k/segment after linking)
  614.     How to do it in the heap?  Try This:
  615.  
  616. const imagewidth = 800;
  617.       imageheight = 600;
  618.  
  619. var MyBitMap  : ptr;
  620.     x,y       : Integer;
  621.     offset    : LONGINT;
  622.  
  623. ...
  624. {INITIALIZATION}
  625. MyBitMap:=newptr(imagewidth*imageheight div 8);
  626. {Create a block in memory where there are 480,000 bits}
  627. ...
  628.  
  629. {Accessing x,y}
  630. offset:=x+y*imagewidth;
  631. {The first 800 bits are the top row, bits 801-1600 are the second row,etc}
  632. BitSet(MyBitMap,Offset);
  633. - -OR-
  634. BitClr...
  635. - -OR-
  636. result:=BitTst...
  637.  
  638. Look up in IMI to make sure the format for BitSet is right.
  639. Also, to make the long arithmatic work  (integers to longints) usually
  640. you need to split up offset:=x+y*imagewidth into
  641. offset:=y*imagewidth;
  642. offset:=offset+x;
  643.  
  644. or declare x and y as LONGINT's
  645.  
  646. Then, if you wanted to copybits to screen, you could just set up a
  647. bitmap where the baseaddr field = MyBitMap (rowbytes = 100, bounds =
  648. (0,0,800,600) for the 800x600 case)
  649.  
  650. Hope this is of some help-
  651. Matt Hall.
  652. - --
  653.  
  654. <<mhall@occs.edu OR
  655. <<SMH9666@OBERLIN.BITNET
  656.  
  657. This is just a beta version signature
  658.  
  659. ---------------------------
  660.  
  661. From: cshotton@oac.hsc.uth.tmc.edu (Chuck Shotton)
  662. Subject: Looking for B-Tree/Data base source
  663. Date: 9 Mar 1992 20:31:01 GMT
  664. Organization: UTHSCH Academic Computing
  665.  
  666. Does anyone know where I can find PD or shareware C source for routines that 
  667. implement a simple indexed file system? I really only need one key, although
  668. multiple keys would be nice. 
  669.  
  670. In a similar vein, once upon a time, I remember seeing documentation about
  671. an Apple-developed B Tree manager. Did it ever make it in as system software
  672. or is it buried somewhere? I can't find any refs in IM I-VI, so my guess is
  673. it doesn't exist. Yes?
  674.  
  675. Chuck
  676.  
  677. +++++++++++++++++++++++++++
  678.  
  679. From: jcav@quads.uchicago.edu (JohnC)
  680. Date: 9 Mar 92 21:44:39 GMT
  681. Organization: The Royal Society for Putting Things on Top of Other Things
  682.  
  683. In article <6183@lib.tmc.edu> cshotton@oac.hsc.uth.tmc.edu (Chuck Shotton) writes:
  684. >In a similar vein, once upon a time, I remember seeing documentation about
  685. >an Apple-developed B Tree manager. Did it ever make it in as system software
  686. >or is it buried somewhere? I can't find any refs in IM I-VI, so my guess is
  687. >it doesn't exist. Yes?
  688.  
  689. It exists, since it is the basis of the HFS file system catalog and is also
  690. used in the new Desktop DB and Desktop DF files.  There are even undocumented
  691. traps that the operating system uses to manipulate the HFS B-trees.  The
  692. reason Apple decided not to document the routines is that they were found to
  693. be much too specific to the needs of the File Manager to be supportable as a
  694. generalized B-tree system.
  695.  
  696.  
  697. - -- 
  698. John Cavallino                  |  EMail: jcav@midway.uchicago.edu
  699. University of Chicago Hospitals |         John_Cavallino@uchfm.bsd.uchicago.edu
  700. Office of Facilities Management | USMail: 5841 S. Maryland Ave, MC 0953
  701. B0 f++ c+ g+ k s+(+) e+ h- pv   |         Chicago, IL  60637
  702.  
  703. ---------------------------
  704.  
  705. From: kent@sunfs3.Camex.COM (Kent Borg)
  706. Subject: Letting Sleeping Powerbooks Lie
  707. Organization: Camex Inc., Boston MA
  708. Date: Tue, 03 Mar 1992 17:02:13 EST
  709.  
  710.  
  711. It says (someplace buried in the manuals, I've never read them, so I
  712. operate on hear-say) that when a Powerbook is in sleep mode it should
  713. not be moved.  The explaination I heard is that the disk is not
  714. parked.
  715.  
  716. That has me wondering, wouldn't it be pretty easy to write a faceless
  717. background app that simply registers itself as being interested in
  718. being told before a sleep, and have it park the disk?
  719.  
  720. The catch is figuring our how to be sure no one unparks the disk after
  721. it has been parked, but playing with queue would probably do it.
  722. (Yes, and getting in fights with other applications which think *they*
  723. need to be last too.)
  724.  
  725. Finally, is this really necessary?  Is it the disk I need to worry
  726. about?  Does the Quantum 80 disk park on powerdown?  (I plan to
  727. upgrade to it from the original 20.)
  728.  
  729. P.S. And, can I safely store a floppy in the floppy drive?
  730.  
  731.  
  732. - --
  733. Kent Borg                            internet: kent@camex.com   AOL: kent borg
  734.                                             H:(617) 776-6899  W:(617) 426-3577
  735. "Eating healthy beef is not healthful, the steer will take offense at you
  736. chewing on his flanks."      -me
  737.  
  738. - -------------------------
  739.  
  740. From: jmunkki@hila.hut.fi (Juri Munkki)
  741. Date: 4 Mar 92 20:11:44 GMT
  742. Organization: Helsinki University of Technology, Finland
  743.  
  744. In article <1992Mar03.170213.16111@sunfs3.Camex.COM> kent@sunfs3.Camex.COM (Kent Borg) writes:
  745. >It says (someplace buried in the manuals, I've never read them, so I
  746. >operate on hear-say) that when a Powerbook is in sleep mode it should
  747. >not be moved.  The explaination I heard is that the disk is not
  748. >parked.
  749. >
  750. >That has me wondering, wouldn't it be pretty easy to write a faceless
  751. >background app that simply registers itself as being interested in
  752. >being told before a sleep, and have it park the disk?
  753.  
  754. I have heard to theories related to the "never move while sleeping"-rule.
  755.  
  756. The first one is that the disk is not parked, the other is that since
  757. any keypress can turn the powerbook on, the disk will unpark itself when
  758. it comes on and the computer will still be moving will the disk is
  759. already rotating.
  760.  
  761. The second theory is certainly true and the the only thing you can do is
  762. make your application wait for a password or some kind of confirmation
  763. from the user when the machine wakes up. The simple parking application
  764. that you proposed will not work alone.
  765.  
  766. I would be very surprised if the Conner disk drives didn't park automatically
  767. when switched off. Of course, the truth often tends to be surprising.
  768.  
  769.    ____________________________________________________________________________
  770.   / Juri Munkki        /  Helsinki University of Technology   /  Wind  / Project /
  771.  / jmunkki@hut.fi  /  Computing Center Macintosh Support  /  Surf  / Arashi  /
  772.  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  773.  
  774. - -------------------------
  775.  
  776. From: quinn@cs.uwa.edu.au (Quinn "The Eskimo!")
  777. Organization: The University of Western Australia
  778. Date: Thu, 5 Mar 1992 01:36:48 GMT
  779.  
  780. In article <1992Mar4.201144.11491@nntp.hut.fi>, jmunkki@hila.hut.fi (Juri Munkki) writes:
  781. > I have heard to theories related to the "never move while sleeping"-rule.
  782. > The first one is that the disk is not parked, the other is that since
  783. > any keypress can turn the powerbook on, the disk will unpark itself when
  784. > it comes on and the computer will still be moving will the disk is
  785. > already rotating.
  786.  
  787. > The second theory is certainly true and the the only thing you can do is
  788. > make your application wait for a password or some kind of confirmation
  789. > from the user when the machine wakes up. The simple parking application
  790. > that you proposed will not work alone.
  791.  
  792. The second theory may be true but it's also silly.  In that case us PB100
  793. owners (where any key will wake the machine from Sleep *or* Shutdown) would
  794. never be able to move our computers. (-:
  795.  
  796. I *never* shut my PB100 down and carry it *everywhere* with me on my bike.
  797. In my own mind I'm convinced that the hard disk is as parked when I sleep
  798. it as when I shut it down.  If not then I stand to lose a hard disk (it's
  799. only 20MB -- I need to replace it anyway (-: ) and the data on it.  I guess
  800. it's time to start backing up.
  801.  
  802. BTW Backing up a PowerBook is an especially good idea anyway.  So when
  803. you get hit by a truck when walking across the road at least your valuable
  804. data survives (-:
  805.  
  806. Quinn "The Eskimo!"   <quinn@cs.uwa.edu.au>  "Real Coke, Diet .sig"
  807. Department of Computer Science, The University of Western Australia
  808.   --- Bicycling Cynic Extraordinair
  809.  
  810.  
  811. - -------------------------
  812.  
  813. From: greggor@Apple.COM (Greg L. Anderson)
  814. Date: 5 Mar 92 18:14:16 GMT
  815. Organization: Apple Computer Inc., Cupertino, CA
  816.  
  817. In article <1992Mar03.170213.16111@sunfs3.Camex.COM> kent@sunfs3.Camex.COM (Kent Borg) writes:
  818. >It says (someplace buried in the manuals, I've never read them, so I
  819. >operate on hear-say) that when a Powerbook is in sleep mode it should
  820. >not be moved.  The explaination I heard is that the disk is not
  821. >parked.
  822.  
  823. The manuals are somewhat vague on the issue.  There's a place that says
  824. that you should shut down your powerbook to transport it, but it never
  825. explicitly states that it is unsafe to move the powerbook while it's
  826. asleep (that is, there is no warning of possible data loss).  The manual
  827. should be less vague--if someone somewhere in Apple thinks its a bad
  828. idea to move a sleeping powerbook, they should have said so.  I couldn't
  829. find anyone who held that view, though.
  830.  
  831. The word from the Powerbook engineering team is that the Powerbooks shut
  832. down the hard disk exactly the same way weather you are shutting down
  833. your PB or just putting it to sleep.  Therefore, if it is safe to move
  834. your PB while it is off, it is safe to move it while it is asleep.
  835.  
  836. The don't-move-a-sleeping powerbook rumour originated from one of
  837. Mac the Knife's articles in MacWeek, reprinted below:
  838.  
  839. - ----------------------------------------------------------------------
  840. >From "Mac the Knife", MacWeek, 13 Jan 92, p. 194:
  841.  
  842. "Let Sleeping PowerBooks lie.
  843.  
  844. Reports of disturbingly high mortality rates of PowerBooks have been
  845. noted.  Some of the problems have been traced to faulty designs or
  846. less-than-adequate manufacturing techniques.  The Knife has discovered
  847. that some of the failures can be traced to user ignorance of an unusual
  848. and counterintuitive engineering feature of all PowerBooks.  Those few
  849. souls who have actually read the documents accompanying their new
  850. laptops know that you're not supposed to move a sleeping PowerBook.
  851. Odd, isn't it?"
  852. - ----------------------------------------------------------------------
  853.  
  854. I can't speak for the manufacturing quality of the PBs (other than to
  855. say that I've only known one person who received a defective one, and
  856. it was promptly fixed in warentee), but the warning about moving sleeping
  857. powerbooks does appear to be foundless.
  858.  
  859. >Does the Quantum 80 disk park on powerdown?  (I plan to
  860. >upgrade to it from the original 20.)
  861.  
  862. I'm no hard disk expert, but it is my understanding that HDs do
  863. automatically park when they are powered down.
  864.  
  865. >P.S. And, can I safely store a floppy in the floppy drive?
  866.  
  867. That's a good question.  I don't know the answer, but I would be
  868. warry of doing it because the floppy's shutter is open while it
  869. is inserted in the disk, so it is more prone to contamination by
  870. stray dirt particles.  I don't think there's any great danger of
  871. data loss, though.
  872. - -- 
  873. =====================   ===========================   =====================
  874. Greg Anderson           Apple Computer, Inc.            O    Ponnuki    O
  875. Macintosh Bodhisattva   Developer Tools Engineering    O O  is  ideal  O O
  876. greggor@apple.com       Apple Developer Suite           O     shape     O
  877. =====================   ===========================   =====================
  878.  
  879. +++++++++++++++++++++++++++
  880.  
  881. From: kent@sunfs3.Camex.COM (Kent Borg)
  882. Organization: Camex Inc., Boston MA
  883. Date: Mon, 09 Mar 1992 13:47:54 EST
  884.  
  885. In article <1992Mar5.013648.10012@bilby.cs.uwa.oz.au> quinn@cs.uwa.edu.au (Quinn "The Eskimo!") writes:
  886. >BTW Backing up a PowerBook is an especially good idea anyway.  So when
  887. >you get hit by a truck when walking across the road at least your valuable
  888. >data survives (-:
  889.  
  890. Seeing as how I am already in Powerbook withdrawl while they fix the
  891. famous loose screen connector, I am starting to wonder wherther the
  892. really dependent among us don't need a second notebook as a backup.
  893. If I had had my computer for much more than a week when I had to part
  894. with it think I would be in really bad shape right now.
  895.  
  896. As for techniques for abusing Powerbooks, I was coming out of the
  897. grocery store the other day, with my computer in its normal bag
  898. sitting in the babyseat of the shopping cart, rattleing and vibrating
  899. along.  Then it occured to me that that was pretty stupid, so I slung
  900. it over my shoulder.
  901.  
  902. - --
  903. Kent Borg                            internet: kent@camex.com   AOL: kent borg
  904.                                             H:(617) 776-6899  W:(617) 426-3577
  905. "Eating healthy beef is not healthful, the steer will take offense at you
  906. chewing on his flanks."      -me
  907.  
  908. ---------------------------
  909.  
  910. From: jovanovi@studsys.mscs.mu.edu (Steve Jovanovic)
  911. Subject: MPW C++ & Zortech C++ Info Wanted
  912. Date: 5 Mar 92 22:56:22 GMT
  913. Organization: Marquette University - Department MSCS
  914.  
  915. Hi Netters,
  916.  
  917. I'm interested in buying a C++ compiler for the Mac, and
  918. I'd like to get some information on MPW & on Zortech.
  919. First, is there any way to get MPW more cheaply than by
  920. paying APDA the retail prices (I know they don't give
  921. ed. disc.'s--why?)?  How much do MPW upgrades typically
  922. cost?  Are there any quirks in the MPW C++ implementation?
  923. Can MPW C++ be used as a generic C++ compiler--are any
  924. libs provided to emulate a UNIX terminal?
  925.  
  926. Can Zortech C++ compile MacApp?  Is the current version
  927. stable? (I've heard previous versions were buggy).  Does
  928. anyone know if Zortech C++ is a temporary solution, until
  929. Symantec can integrate it into THINK C, or will both be
  930. marketed as separate applications?  I'm trying to get an
  931. idea of whether or not it's "safe" to buy Zortech C++
  932. without worrying that the product will be killed sometime
  933. in the future.  Also, can it be purchased anywhere via
  934. mail order?  The only place I've seen it advertised is in
  935. Symantec's product catalogs, for $495 (including MPW Shell).
  936. Does anyone have a phone # for Zortech?
  937.  
  938. Thanks a lot for your help!  I'll summarize all responses
  939. in a future post.
  940.  
  941. steve jovanovic
  942.  
  943. PS Also, I'd appreciate any comments on the MPW Assembler.
  944. Can you do inline assembly in Zortech?
  945.  
  946. +++++++++++++++++++++++++++
  947.  
  948. From: cory@enigami.mv.com (Cory Kempf)
  949. Date: 7 Mar 92 06:19:20 GMT
  950. Organization: EnigamI, Inc., Nashua, NH
  951.  
  952.  
  953. In article <2435@spool.mu.edu> (comp.sys.mac.programmer), jovanovi@studsys.mscs.mu.edu (Steve Jovanovic) writes:
  954. >Hi Netters,
  955. >
  956. >I'm interested in buying a C++ compiler for the Mac, and
  957. >I'd like to get some information on MPW & on Zortech.
  958. >First, is there any way to get MPW more cheaply than by
  959. >paying APDA the retail prices (I know they don't give
  960. >ed. disc.'s--why?)?  How much do MPW upgrades typically
  961. >cost?
  962.  
  963. I wish you luck.  At present, I would say that there are no *GOOD*
  964. C++ compilers available for the Mac.  
  965.  
  966. MPW C++ is a port of CFront 2.1.  AT&T's current release is 3.0, and
  967. includes some new features that are not in the 2.0 release (like templates
  968. & exceptions).
  969.  
  970. APDA is your only real source for MPW & C++, although you can often
  971. get the MPW shell from other vendors who bundle it with other compilers
  972. (Zortech, for one).
  973.  
  974. I am not sure how much upgrades usually cost outside of ETO.  If you
  975. subscribe to ETO (e.g. buy MacApp, Pascal, etc.), it is $300/year.
  976. Personally I am *VERY* dissatisfied with ETO.  The latest issue (ETO
  977. 6) looks like it was thrown together in about half an hour.  A really
  978. low quality piece.  Very little new stuff on it, a couple of bug fixes,
  979. and some parts were left out.  411, the main reason that *I* went
  980. to the expence of ETO has not been upgraded yet, and *STILL* does
  981. not include Inside Mac VI.  Oh yeah, if you are not an Apple Partner, tech
  982. support is *NOT* available.
  983.  
  984. I am currently looking into the Zortech compiler, and will post a
  985. summary next week or so, but so far, the answers that I have gotten
  986. back are not good.
  987.  
  988. >  Are there any quirks in the MPW C++ implementation?
  989. >Can MPW C++ be used as a generic C++ compiler--are any
  990. >libs provided to emulate a UNIX terminal?
  991.  
  992. Well, volitile is *NOT* implimented (it is implimented in the C++
  993. compiler, but not in the C compiler (e.g. Apple's C is NOT ANSI!).
  994. Like I said, it is only up to the 2.1 release of CFront, not 3.0.
  995. They do include two options for standard io type interaction, you
  996. can write a shell tool, which is more or less like any other unix
  997. app, or you can write an SIOW application, which is an application
  998. that has a StdIO window.  I don't think that curses are suppported
  999. though, but I have never looked.
  1000.  
  1001. >Can Zortech C++ compile MacApp?
  1002.  
  1003. from what I can tell, no.
  1004.  
  1005. +C
  1006.  
  1007.  
  1008. - -------------------------------------------------------------
  1009. Cory Kempf                    EnigamI, Inc.
  1010. cory@enigami.mv.com           ...!decvax!enigami!cory
  1011.  
  1012. ---------------------------
  1013.  
  1014. From: wprice@donald.claremont.edu (W. Frank Price)
  1015. Subject: CTB/System 7 popup menu bug
  1016. Date: 6 Mar 92 03:36:23 GMT
  1017. Organization: Harvey Mudd College
  1018.  
  1019. I've been encountering a bug in the System 7 popupmenu CDEF stuff that  
  1020. draws the popup menu incorrectly in Geneva 12 if you setit to Geneva 9.   
  1021. It is quite repeatable on any system, and happens after running Mac Write  
  1022. II.  It works fine before you run that program.  Apparently seveal  
  1023. Microsoft applications also cause this to happen.  Anyone can see this  
  1024. ocur by running MacWrite II and then pulling down a popup menu in a comm  
  1025. toolbox application.  I am trying to write a CDEF to temporarily get  
  1026. around this, but in order to do that, I have to know what variable is  
  1027. getting mucked.  It must be some low memory global that is getting trashed  
  1028. by MWII, but nobody seems to know.  Apple just says "the bug will be fixed  
  1029. in a future release of the system software."  Great, but the real world  
  1030. isn't on their rather protracted schedule.
  1031.  
  1032. Is anyone encountering this or able to offer some assistance on which  
  1033. variable(s) are in question?
  1034.  
  1035. +++++++++++++++++++++++++++
  1036.  
  1037. From: wombat@claris.com (Scott Lindsey)
  1038. Date: 6 Mar 92 23:54:50 GMT
  1039. Organization: Claris Corporation
  1040.  
  1041. In article <1992Mar6.033623.16686@muddcs.claremont.edu>, wprice@donald.claremont.edu (W. Frank Price) writes:
  1042. > I've been encountering a bug in the System 7 popupmenu CDEF stuff that  
  1043. > draws the popup menu incorrectly in Geneva 12 if you setit to Geneva 9.   
  1044. > It is quite repeatable on any system, and happens after running Mac Write  
  1045. > II.  It works fine before you run that program.  Apparently seveal  
  1046. > Microsoft applications also cause this to happen.
  1047. [...]
  1048. > Is anyone encountering this or able to offer some assistance on which  
  1049. > variable(s) are in question?
  1050.  
  1051. I used TMON to dump out 0-$2000, and compared before and after and here's the likely
  1052. suspects.  However, I don't have a copy of MWII source right now (and I certainly
  1053. don't have any MicroSoft source) to see if it's direct manipulation of any of these.
  1054. Most of these aren't documented in IM I-VI or the tech notes.
  1055.  
  1056. ClarisWorks seems to fix the problem if run after MWII has been launched, but not
  1057. if MWII is launched while ClarisWorks is still running.
  1058. A likely suspect seems to be MWII's MDEF (Do the MicroSoft apps in question have
  1059. their own MDEF's?), particularly the WYSIWYG Fonts menu.  MacTerminal doesn't have
  1060. an MDEF (or a fonts menu), and the problem doesn't clear up on it.  ClarisWorks has
  1061. an MDEF similar to MWII's (but not exactly the same) which might explain why it
  1062. fixes it.  Possibly calls to GetFontInfo from the MDEF modify one of these when the
  1063. pop-up CDEF doesn't expect it to change, or expects that it be some standard value.
  1064. Particularly suspect are CurFMInput and CurFMSize.  Maybe an assumption like "if
  1065. CurFMInput is non-zero (not the system font) then I can use those globals because 
  1066. it's left around from when I asked about Geneva 9, otherwise, it's the system font,
  1067. which I know isn't Geneva 9, so I'd better check everything" was made.
  1068.  
  1069. "dump" was made while the bug was evident;  "dump2" after it had been "fixed";
  1070. neither were made while the machine was in any particular consistent state.
  1071.  
  1072. Nonmatching lines (File "dump"; Line 599; File "dump2"; Line 599)
  1073.  599    00000903:      TFondStateU  : $20
  1074.  
  1075.  599    00000903:      TFondStateU  : $60
  1076.  
  1077. Nonmatching lines (File "dump"; Line 623:626; File "dump2"; Line 623:626)
  1078.  623    00000986:      TGotStrikeU  : $60
  1079.  624    00000987:  TFMDefaultSizeU  : $0C
  1080.  625    00000988:     TCurFMInputU  : 0004
  1081.  626    0000098A:      TCurFMSizeU  : $000C
  1082.  
  1083.  623    00000986:      TGotStrikeU  : $F0
  1084.  624    00000987:  TFMDefaultSizeU  : $0C
  1085.  625    00000988:     TCurFMInputU  : 7F0D
  1086.  626    0000098A:      TCurFMSizeU  : $0009
  1087.  
  1088. Nonmatching lines (File "dump"; Line 630:633; File "dump2"; Line 630:633)
  1089.  630    00000990:     TCurFMNumerU  : $00010001
  1090.  631    00000994:     TCurFMDenomU  : $00010001
  1091.  632    00000998:      TFOutErrorU  : $0000
  1092.  633    0000099A: TFOutFontHandleU  : $0013D594
  1093.  
  1094.  630    00000990:     TCurFMNumerU  : $00090009
  1095.  631    00000994:     TCurFMDenomU  : $00090009
  1096.  632    00000998:      TFOutErrorU  : $0000
  1097.  633    0000099A: TFOutFontHandleU  : $00011584
  1098.  
  1099. Nonmatching lines (File "dump"; Line 641:643; File "dump2"; Line 641:643)
  1100.  641    000009A5:     TFOutAscentU  : $0C
  1101.  642    000009A6:    TFOutDescentU  : $03
  1102.  643    000009A7:     TFOutWidMaxU  : $07
  1103.  
  1104.  641    000009A5:     TFOutAscentU  : $09
  1105.  642    000009A6:    TFOutDescentU  : $02
  1106.  643    000009A7:     TFOutWidMaxU  : $06
  1107.  
  1108. Nonmatching lines (File "dump"; Line 783:784; File "dump2"; Line 783:784)
  1109.  783    00000BC2:   TLastFONDU  : $001060D4
  1110.  784    00000BC6:     TFONDIDU  : $0004
  1111.  
  1112.  783    00000BC2:   TLastFONDU  : $00125158
  1113.  784    00000BC6:     TFONDIDU  : $7F0D
  1114.  
  1115.  
  1116. - --
  1117. Scott Lindsey <wombat@claris.com>
  1118.  
  1119. ---------------------------
  1120.  
  1121. End of C.S.M.P. Digest
  1122. **********************
  1123.